<script type="text/javascript">
	
/*	动态规划
	
	1. 使用一个变量curMax用来保存当前已经遍历过的数据之和
	2. curMax有两种情况 
	2.1 curMax > 0表示curMax和最后的数据组合可能会使最大值
	2.2 curMax < 0表示curMax会成为后面数据的猪队友，因此需要重新挑选新的队友
	2.3 但是光有curMax不够，我们需要使用一个全局最大值
*/
function maxSubArray(arr) {
	let len = arr.length;
	if(len <= 1) return arr[0];

	let max = arr[0], curMax = arr[0];
	arr.forEach(function(val, index) {
		if(curMax > 0) {
			curMax = curMax + val;
		} else {
			curMax = val;
		}
		max = Math.max(curMax, max);
	})

	return max;
}

const res = maxSubArray([-2,1,-3,4,-1,2,1,-5,4]);
console.log(res);

</script>